home *** CD-ROM | disk | FTP | other *** search
/ PC Gamer (Italian) 30 / PC Gamer IT CD 30 1-2.iso / MOTS / GAMEDATA / RESOURCE / JKMRES.GOO / cog_force_saberthrow.cog < prev    next >
Text File  |  1998-02-25  |  6KB  |  232 lines

  1. # Jedi Knight Cog Script
  2. #
  3. # FORCE_SABERTHROW.COG
  4. #
  5. # FORCEPOWER Script - Saber Throw
  6. #  Bin 37
  7. #
  8. # [YB]
  9. #
  10. # (C) 1997 LucasArts Entertainment Co. All Rights Reserved
  11.  
  12.  
  13. symbols
  14.  
  15. thing       player                           local
  16.  
  17. flex        cost=60.0                        local
  18. int         rank=0                           local
  19. flex        mana                             local
  20.  
  21. sound       saberSound=SaberThrow.wav        local
  22.  
  23. int         saber                            local
  24. int         saberIndex                       local
  25.  
  26. template    lightsaber=+force_saber          local
  27. template    blueSaber=+fsab_blue             local
  28. template    greenSaber=+fsab_green           local
  29. template    yellowSaber=+fsab_yellow         local
  30. template    orangeSaber=+fsab_orange         local
  31. template    redSaber=+fsab_red               local
  32. template    dredSaber=+fsab_dred             local
  33. template    purpleSaber=+fsab_purple         local
  34.  
  35. int         saberSideMat=-1                  local
  36.  
  37. material    blueMat=saberblue1.mat           local
  38. material    greenMat=sabergreen1.mat         local
  39. material    yellowMat=saberyellow1.mat       local
  40. material    orangeMat=saberorange1.mat       local
  41. material    redMat=saberred1.mat             local
  42. material    dredMat=saberdred1.mat           local
  43. material    purpleMat=saberpurple1.mat       local
  44.  
  45. flex        autoAimFOV=10                    local
  46. int         inbubble=0                       local
  47.  
  48. message     startup
  49. message     shutdown
  50. message     activated
  51. message     timer
  52. message     newplayer
  53. message     killed
  54. message     selected
  55. message     enterbubble
  56. message     exitbubble
  57.  
  58. end
  59.  
  60. # ========================================================================================
  61.  
  62. code
  63.  
  64. startup:
  65.    player = GetLocalPlayerThing();
  66.    inbubble = 0;
  67.    call stop_power;
  68.  
  69.    Return;
  70.  
  71. # ........................................................................................
  72.  
  73. shutdown:
  74.    call stop_power;
  75.  
  76.    Return;
  77.  
  78. # ........................................................................................
  79.  
  80. activated:
  81.    if(inbubble) Return;
  82.  
  83.    // saber is not the current weapon
  84.    if(GetCurWeapon(player) != 11) Return;
  85.  
  86.    // the saber is being drawn right now
  87.    if(SetInv(player, 89) == 1) Return;
  88.  
  89.    rank = GetInv(player, 37);
  90.  
  91.    if(rank == 1) cost = 100;
  92.    else if(rank == 2) cost = 80;
  93.    else if(rank == 3) cost = 60;
  94.    else if(rank == 4) cost = 40;
  95.  
  96.    if(GetInv(player, 14) < cost && GetInv(player, 14) < GetInv(player, 69)) Return;
  97.  
  98.    if(!IsInvActivated(player, 37))
  99.    {
  100.       SetInvActivated(player, 37, 1);
  101.  
  102.       SetInv(player, 131, 0);
  103.  
  104.       SetFireWait(player, -1);
  105.       SetMountWait(player, 0);
  106.       SetCurInvWeapon(player, 0);
  107.       SelectWeapon(player, 1);
  108.  
  109.       // Cleanup in the saber cog because we tried very hard
  110.       // NOT to call its deselected: event just above to avoid
  111.       // playing the dismount animation, etc.
  112.       SendMessage(GetInvCog(player, 131), user0);
  113.  
  114.       //PlayMode(player, 24);
  115.  
  116.       if(GetInv(player, 64) != 1) ChangeInv(player, 14, -cost);
  117.  
  118.       // Send a "force disturbance"...
  119.       if(!IsMulti())
  120.          SendMessageExRadius(GetThingPos(player), cost, 0x4, splash, 37, 0, 0, 0);
  121.  
  122.       saberSideMat = jkGetSaberSideMat(player);
  123.  
  124.       if(saberSideMat == blueMat)
  125.       {
  126.          // Print("Blue saber...");
  127.          saberIndex = 1;
  128.       }
  129.       else
  130.       if(saberSideMat == greenMat)
  131.       {
  132.          // Print("Green saber...");
  133.          saberIndex = 2;
  134.       }
  135.       else
  136.       if(saberSideMat == yellowMat)
  137.       {
  138.          // Print("Yellow saber...");
  139.          saberIndex = 3;
  140.       }
  141.       else
  142.       if(saberSideMat == orangeMat)
  143.       {
  144.          // Print("Orange saber...");
  145.          saberIndex = 4;
  146.       }
  147.       else
  148.       if(saberSideMat == redMat)
  149.       {
  150.          // Print("Red saber...");
  151.          saberIndex = 5;
  152.       }
  153.       else
  154.       if(saberSideMat == dredMat)
  155.       {
  156.          // Print("Dark Red saber...");
  157.          saberIndex = 6;
  158.       }
  159.       else
  160.       if(saberSideMat == purpleMat)
  161.       {
  162.          // Print("Purple saber...");
  163.          saberIndex = 7;
  164.       }
  165.       else
  166.       {
  167.          // Print("Unknown saber... Throwing yellow saber...");
  168.          saberIndex = 3;
  169.       }
  170.  
  171.       FireProjectile(player, lightsaber[saberIndex], saberSound, 24, '0 0 0', '0 0 0', 1.0, 0, autoAimFOV, autoAimFOV);
  172.  
  173.       // We really don't want to lose the saber in single player...
  174.       // Or if the personnality is Jedi...
  175.       if((jkGetMultiParam(0) == 0) || (jkGetMultiParam(0) == 1))
  176.          SetTimerEx(5, 1, 0, 0);
  177.       else
  178.          SetTimerEx(5, 2, 0, 0);
  179.  
  180.       SetBinWait(player, 37, 5.5);
  181.    }
  182.  
  183.    Return;
  184.  
  185. # ........................................................................................
  186.  
  187. timer:
  188.    if(GetSenderId() == 1) SetInv(player, 131, 1);
  189.  
  190.    call stop_power;
  191.  
  192.    Return;
  193.  
  194. # ........................................................................................
  195.  
  196. selected:
  197.    jkPrintUNIString(player, 37);
  198.    Return;
  199.  
  200. # ........................................................................................
  201.  
  202. killed:
  203.    if(GetSenderRef() != player) Return;
  204.  
  205. newplayer:
  206.    call stop_power;
  207.    Return;
  208.  
  209. # ........................................................................................
  210.  
  211. enterbubble:
  212.    inbubble = 1;
  213.    call stop_power;
  214.    Return;
  215.  
  216. # ........................................................................................
  217.  
  218. exitbubble:
  219.    inbubble = 0;
  220.    Return;
  221.  
  222. # ........................................................................................
  223.  
  224. stop_power:
  225.    SetInvActivated(player, 37, 0);
  226.  
  227.    Return;
  228.  
  229. end
  230.  
  231.  
  232.